Personalization platform

ABSTRACT

A personalization system includes a user events module configured to receive a plurality of user events, each user event of the plurality of user events including one or more of a transactional event and a behavioral event associated with the online user, and a personalization cluster including a plurality of personalization servers, each personalization server of the plurality of personalization servers configured to receive a personalization request from a requesting system, the personalization request including a plurality of intermediate results identified by the requesting system, each intermediate result representing a possible outcome that may be presented by the requesting system to the online user, compute a score for each intermediate result of the plurality of immediate results based at least in part on the plurality of user events, thereby generating a plurality of scores, and return the plurality of scores to the requesting system.

CROSS-REFERENCE TO RELATED APPLICATIONS

This continuation patent application claims priority to and benefit ofU.S. patent application Ser. No. 14/680,018, filed Apr. 6, 2015, andissued as U.S. Pat. No. 10,031,976 on Jul. 24, 2018; which claimspriority benefit of U.S. Provisional Patent Application Ser. No.61/976,456 filed on Apr. 7, 2014 and entitled “PersonalizationPlatform,” which is incorporated herein by reference.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally to data analysis,and more particularly, but not by way of limitation, to personalizationplatform.

BACKGROUND

In recent years, a vast amount of information relating to various useractivity and behaviors has rapidly become available.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present disclosure and cannot be considered aslimiting its scope.

FIG. 1 is a block diagram illustrating an example embodiment of ahigh-level client-server-based network architecture that may be used toprovide personalization services for client devices, their users, and/orthird-party servers

FIG. 2 illustrates a block diagrams showing components provided withinthe system of FIG. 1 according to some example embodiments.

FIG. 3 is a block diagram depicting an example embodiment of apersonalization system.

FIG. 4 depicts an example embodiment of a personalization platform thatprovides personalization services for users and/or client devices.

FIG. 5 depicts an example method for accessing user data to performpersonalization.

FIG. 6 illustrates a diagrammatic representation of a machine in theform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed, according to an example embodiment.

Like numbers in the figures indicate like components.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the disclosure. In the followingdescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide an understanding of variousembodiments of the inventive subject matter. It will be evident,however, to those skilled in the art, that embodiments of the inventivesubject matter may be practiced without these specific details. Ingeneral, well-known instruction instances, protocols, structures, andtechniques have not been shown in detail.

Example embodiments provide systems and methods for personalizationmodeling using various user data. Personalizing a user experience (e.g.,using a website or e-commerce site) provides a number of advantages. Forinstance, personalization may enable more relevant experiences for theuser, retention of existing users, new user acquisitions, reactivatingchurned users, increasing activity per user, improving conversion fromvisits to transactions, and so on. Personalization may take the form ofpersonalized search rankings/search autocomplete, website layout, onsiteads, user preferences (e.g., the item condition a user may prefer whenpurchasing an item from an e-commerce website), deals, featuredproducts, and so forth.

Personalization may be achieved by analyzing and modeling user data. Forinstance, propensity models may be developed and used to determine thelikelihood of a user action. In this instance, personalization may beperformed based on the likelihood of various user actions (e.g., theuser may have a high propensity to purchase discounted items, as aresult the user experience may be personalized to feature morediscounted items).

The user data may include a variety of different types of informationfrom a variety of sources. For example, the user data may include userprofile information (e.g., user demographic information such as accountid, gender, age, region, ethnicity, marital status, socioeconomicstatus, and the like), purchase history, browsing history, searchhistory, item “watch” data (e.g., when the user marks an item fortracking purposes), other engagement information, contextual information(e.g., current location of user, user interaction with user interfaces,sensor data from a device of the user, and so forth), and otherinformation such as timing information for any of the above. The userdata may be access from many difference sources such as e-commercesites, social networking sites, a user device, and so on, as well as thepersonalization system and components described herein.

In some embodiments described herein, a personalization platformprovides various personalization functionalities using the user data.For example, the personalization platform may provide controlled accessto the user data, enable event processing at near real-time, maintainactivity timelines of the user data, enable in-session targeting,provide environment for predictive model evaluation, backup and restorethe user data, and so forth. In one example embodiment, the platform maybe implemented using in part the Apache Cassandra database.

The term “search autocomplete”, as used herein, refers to an aspect ofsearch functionality provided by, e.g., a search engine for an ecommercesite, that provides anticipatory guidance for a user entering data intoa search field (i.e., prior to the user submitting/executing thesearch). A search engine may receive an initial entry of characters (a“query fragment”) from the user as the user types in the search field.The search engine may analyze those initial characters and provide oneor more options or “suggestions” of complete search terms that conformto the initial characters entered by the user. This feature orfunctionality within the search field is referred to herein as searchautocomplete.

FIG. 1 is a diagram illustrating an example embodiment of a high-levelclient-server-based network architecture 100 that may be used to providepersonalization services for, e.g., client devices 110,112, their users105, and/or third-party servers 130. A networked system 102, in theexample, forms a network-based marketplace or payment system, andprovides server-side functionality via a network 104 (e.g., the Internetor wide area network (WAN)) to one or more client devices 110 and 112.FIG. 1 illustrates, for example, a web client 106 (e.g., a browser, suchas the Internet Explorer® browser developed by Microsoft® Corporation ofRedmond, Wash. State), and a programmatic client 108 executing onrespective client devices 110 and 112.

The client devices 110 and 112 may comprise, but are not limited to, amobile phone, desktop computer, laptop, portable digital assistants(PDAs), smart phones, tablets, ultra books, netbooks, laptops,multi-processor systems, microprocessor-based or programmable consumerelectronics, game consoles, set-top boxes, or any other communicationdevice that a user may utilize to access the networked system 102. Insome embodiments, the client devices 110 and 112 may comprise a displaymodule (not shown) to display information (e.g., in the form of userinterfaces). In further embodiments, the client devices 110 and 112 maycomprise one or more of a touch screens, accelerometers, gyroscopes,cameras, microphones, global positioning system (GPS) devices, and soforth. The client devices 110 and 112 may be devices of a user that areused to perform a transaction involving digital goods within thenetworked system 102.

In the example embodiment, the networked system 102 is a network-basedmarketplace that responds to requests for product listings, publishespublications comprising item listings of products available on thenetwork-based marketplace, and manages payments for these marketplacetransactions. One or more users 105 may be a person, a machine, or othermeans of interacting with client devices 110 and 112. In embodiments,the user 105 is not part of the network architecture 100, but mayinteract with the network architecture 100 via client devices 110 and112 or another means. For example, one or more portions of network 104may be an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, a wirelessnetwork, a WiFi network, a WiMax network, another type of network, or acombination of two or more such networks.

In some embodiments, each of the client devices 110 and 112 may includeone or more applications (also referred to as “apps”) such as, but notlimited to, a web browser, messaging application, electronic mail(email) application, an e-commerce site application (also referred to asa marketplace application), and the like. In some embodiments, if thee-commerce site application is included in a given one of the clientdevices 110 and 112, then this application is configured to locallyprovide the user interface and at least some of the functionalities withthe application configured to communicate with the networked system 102,on an as needed basis, for data and/or processing capabilities notlocally available (e.g., access to a database of items available forsale, to authenticate a user, to verify a method of payment, etc.).Conversely if the e-commerce site application is not included in a givenone of the client devices 110 and 112, the given one of the clientdevices 110 and 112 may use its web browser to access the e-commercesite (or a variant thereof) hosted on the networked system 102. Althoughtwo client devices 110 and 112 and one third party server 130 are shownin FIG. 1, more or less than two device machines 110 and 112 and onethird party server 130 can be included in the architecture 100.

One or more users 105 may be a person, a machine, or other means ofinteracting with the client devices 110 and 112. In example embodiments,the user 105 is not part of the network architecture 100, but mayinteract with the network architecture 100 via the client devices 110and 112 or another means.

In the example embodiment, an application program interface (API) server114 and a web server 116 are coupled to, and provide programmatic andweb interfaces respectively to, one or more application servers 118. Theapplication servers 118 may host one or more publication systems 120 andpayment systems 122, each of which may comprise one or more modules orapplications and each of which may be embodied as hardware, software,firmware, or any combination thereof. The application servers 118 are,in turn, shown to be coupled to one or more database servers 124 thatfacilitate access to one or more information storage repositories ordatabase(s) 126. In an example embodiment, the databases 126 are storagedevices that store information to be posted (e.g., publications orlistings) to the publication system 120. The databases 126 may alsostore digital goods information in accordance with example embodiments.

The publication systems 120 may provide a number of publicationfunctions and services to users 105 that access the networked system102. The payment systems 122 may likewise provide a number of functionsto perform or facilitate payments and transactions. While thepublication systems 120 and payment systems 122 are shown in FIG. 1 toboth form part of the networked system 102, it will be appreciated that,in alternative embodiments, each system 120 and 122 may form part of apayment service that is separate and distinct from the networked system102. In some embodiments, the payment systems 122 may form part of thepublication system 120.

In the example embodiment, a personalization system 123 providesfunctionality operable to perform various personalizations using theuser data, as described herein. For example, the personalization system123 may access the user data from database servers 124, databases 126,the third party servers 130, the publication system 120, and/or othersources. In some example embodiments, the personalization system 123analyzes the user data to perform personalization of, for example,search rankings/search autocomplete, website layout, onsite ads, userpreferences, deals, featured products, and so on. In some embodiments,the personalization system 123 may communicate with the publicationsystems 120 (e.g., accessing item listings) and/or the payment system122. In an alternative embodiment, the personalization system 123 may bea part of the publication system 120.

Further, while the client-server-based network architecture 100 shown inFIG. 1 employs a client-server architecture, the present disclosure isnot limited to such an architecture, and could find application in adistributed, or peer-to-peer, architecture system, for example. Thevarious publication, payment, and personalization system 120, 122, and123 could also be implemented, in some embodiments, as standalonesoftware programs, which do not necessarily have networkingcapabilities.

In the example embodiment, the web client 106 accesses the variouspublication and payment systems 120 and 122 via the web interfacesupported by the web server 116. Similarly, the programmatic client 108accesses the various services and functions provided by the publicationand payment systems 120 and 122 via the programmatic interface providedby the API server 114. The programmatic client 108 may, for example, bea seller application (e.g., the Turbo Lister application developed byeBay® Inc., of San Jose, Calif.) to enable sellers to author and managelistings on the networked system 102 in an off-line manner, and toperform batch-mode communications between the programmatic client 108and the networked system 102.

Additionally, in the example embodiment, one or more third partyapplications 128, executing on a third party server(s) 130, haveprogrammatic access to the networked system 102 via the programmaticinterface provided by the API server 114. For example, the third partyapplication 128, utilizing information retrieved from the networkedsystem 102, may support one or more features or functions on a websitehosted by the third party. The third party website may, for example,provide one or more promotional, marketplace, or payment functions thatare supported by the relevant applications of the networked system 102.

FIG. 2 illustrates a block diagram illustrating example componentsprovided within the networked system 102 in which personalizationservices may be provided according to some embodiments. The networkedsystem 102 may be hosted on dedicated or shared server machines (notshown) that are communicatively coupled to enable communications betweenserver machines. The components themselves are communicatively coupled(e.g., via appropriate interfaces) to each other and to various datasources, so as to allow information to be passed between theapplications or so as to allow the applications to share and accesscommon data. Furthermore, the components may access one or moredatabases 126 via the database servers 124.

The networked system 102 may provide a number of publishing, listing,and/or price-setting mechanisms whereby a seller (also referred to as afirst user) may list (or publish information concerning) goods orservices for sale or barter, a buyer (also referred to as a second user)can express interest in or indicate a desire to purchase or barter suchgoods or services, and a transaction (such as a trade) may be completedpertaining to the goods or services. To this end, the networked system102 may comprise at least one publication engine 202 and one or moreselling engines 204. The publication engine 202 may publish information,such as item listings or product description pages, on the networkedsystem 102. In some embodiments, the selling engines 204 may compriseone or more fixed-price engines that support fixed-price listing andprice setting mechanisms and one or more auction engines that supportauction-format listing and price setting mechanisms (e.g., English,Dutch, Chinese, Double, Reverse auctions, etc.). The various auctionengines may also provide a number of features in support of theseauction-format listings, such as a reserve price feature whereby aseller may specify a reserve price in connection with a listing and aproxy-bidding feature whereby a bidder may invoke automated proxybidding. The selling engines 204 may further comprise one or more dealengines that support merchant-generated offers for products andservices.

A listing engine 206 allows sellers to conveniently author listings ofitems or authors to author publications. In one embodiment, the listingspertain to goods or services that a user (e.g., a seller) wishes totransact via the networked system 102. In some embodiments, the listingsmay be an offer, deal, coupon, or discount for the good or service. Eachgood or service is associated with a particular category. The listingengine 206 may receive listing data such as title, description, andaspect name/value pairs. Furthermore, each listing for a good or servicemay be assigned an item identifier. In other embodiments, a user maycreate a listing that is an advertisement or other form of informationpublication. The listing information may then be stored to one or morestorage devices coupled to the networked system 102 (e.g., databases126). Listings also may comprise product description pages that displaya product and information (e.g., product title, specifications, andreviews) associated with the product. In some embodiments, the productdescription page may include an aggregation of item listings thatcorrespond to the product described on the product description page.

The listing engine 206 also may allow buyers to conveniently authorlistings or requests for items desired to be purchased. In someembodiments, the listings may pertain to goods or services that a user(e.g., a buyer) wishes to transact via the networked system 102. Eachgood or service is associated with a particular category. The listingengine 206 may receive as much or as little listing data, such as title,description, and aspect name/value pairs, that the buyer is aware ofabout the requested item. In some embodiments, the listing engine 206may parse the buyer's submitted item information and may completeincomplete portions of the listing. For example, if the buyer provides abrief description of a requested item, the listing engine 206 may parsethe description, extract key terms and use those terms to make adetermination of the identity of the item. Using the determined itemidentity, the listing engine 206 may retrieve additional item detailsfor inclusion in the buyer item request. In some embodiments, thelisting engine 206 may assign an item identifier to each listing for agood or service.

In some embodiments, the listing engine 206 allows sellers to generateoffers for discounts on products or services. The listing engine 206 mayreceive listing data, such as the product or service being offered, aprice and/or discount for the product or service, a time period forwhich the offer is valid, and so forth. In some embodiments, the listingengine 206 permits sellers to generate offers from the sellers' mobiledevices. The generated offers may be uploaded to the networked system102 for storage and tracking.

Searching the networked system 102 is facilitated by a searching engine208. For example, the searching engine 208 enables keyword queries oflistings published via the networked system 102. In example embodiments,the searching engine 208 receives the keyword queries from a device of auser and conducts a review of the storage device storing the listinginformation. The review will enable compilation of a result set oflistings that may be sorted and returned to the client device (e.g.,device machine 110, 112) of the user. The searching engine 208 mayrecord the query (e.g., keywords) and any subsequent user actions andbehaviors (e.g., navigations, selections, or click-throughs).

The searching engine 208 also may perform a search based on a locationof the user. A user may access the searching engine 208 via a mobiledevice and generate a search query. Using the search query and theuser's location, the searching engine 208 may return relevant searchresults for products, services, offers, auctions, and so forth to theuser. The searching engine 208 may identify relevant search results bothin a list form and graphically on a map. Selection of a graphicalindicator on the map may provide additional details regarding theselected search result. In some embodiments, the user may specify, aspart of the search query, a radius or distance from the user's currentlocation to limit search results.

In a further example, a navigation engine 210 allows users to navigatethrough various categories, catalogs, or inventory data structuresaccording to which listings may be classified within the networkedsystem 102. For example, the navigation engine 210 allows a user tosuccessively navigate down a category tree comprising a hierarchy ofcategories (e.g., the category tree structure) until a particular set oflisting is reached. Various other navigation applications within thenavigation engine 210 may be provided to supplement the searching andbrowsing applications. The navigation engine 210 may record the varioususer actions (e.g., clicks) performed by the user in order to navigatedown the category tree.

In the example embodiment, personalization system 123 providespersonalization services to one or more of the engines 202, 204, 206,208, and 210 provided by networked system 102. As such, networked system102 provides personalization services to, for example, client devices110, 112 and/or third party servers 130 (each shown in FIG. 1).

FIG. 3 is a block diagram of the example personalization system 123 thatprovides functionality operable to perform various personalizations inthe architecture 100 (shown in FIG. 1) using, for example, user datastored in databases 126 (shown in FIG. 1). In an example embodiment, thepersonalization system 123 includes a user interface module 310, anetwork communication module 320, a web services module 330, a datamodule 340, and an analysis module 350. All of the modules maycommunicate with each other, for example, via a network coupling, sharedmemory, and the like. It will be appreciated that each module may beimplemented as a single module, combined into other modules, or furthersubdivided into multiple modules. Other modules not pertinent to exampleembodiments may also be included, but are not shown.

The user interface module 310 may provide various user interfacefunctionality operable to interactively present and receive informationfrom the user 105 and/or computing devices 110, 112 (each shown in FIG.1). For example, the user interface module 310 may provide a userinterface configured to present item listings from an e-commerce websiteto the user. Information may be presented using a variety of meansincluding visually displaying information and using other device outputs(e.g., audio, tactile, and so forth). Similarly, information may bereceived by a variety of means including alphanumeric input or otherdevice input (e.g., one or more touch screen, camera, tactile sensors,light sensors, infrared sensors, biometric sensors, microphone,gyroscope, accelerometer, other sensors, and so forth). It will beappreciated that the user interface module 310 may provide many otheruser interfaces to facilitate functionality described herein. Presentingmay mean communicating information to a device (e.g., client devices 110and 112), the device having functionality operable to present thecommunicated information. Interactively presenting may mean the exchangeof information from the presenting device, the user 105, and thepersonalization system 123.

In the example embodiment, the network communication module 320 performsvarious network communication functions such as communicating withnetworked system 102 (shown in FIGS. 1 and 2), the database servers 124(shown in FIG. 1), and the third party servers 130 (shown in FIG. 1).Network communication may operate over any wired or wireless means toprovide communication functionality.

The web services module 330, in the example embodiment, performs variousweb services functions such as retrieving information from third partyservers 130 and application servers 118. Information retrieved by theweb services module 330 may include data associated with the user 105(e.g., user profile information from an online account, socialnetworking data associated with the user 105, and so forth), dataassociated with an item (e.g., images of the item, reviews of the item,and so forth), and other data.

In the example embodiment, the data module 340 performs various datafunctions to facilitate the functionality of the personalization system123. For example, the data module 340 may access user data correspondingto the user, such as, for example, behavioral events and transactionalevents performed by the user. The user data may include a wide varietyof data and may be accessed from many different sources include thethird party servers 130, the data base servers 124, the marketplacesystem 120, the client devices 110 and 112, and so on.

Further, in the example embodiment, the analysis module 350 may performvarious analyses using a variety of data to facilitate the functionalityof the personalization system 123. For example, the analysis module 350may perform an analysis of the user data to personalize search results,website layout, user preferences, and so forth. Many schemes andtechniques may be employed by the analysis module 350 to performpersonalization.

In some embodiments, the data module 340 may access the user data (e.g.,behavioral events and transactional events) from many difference sourcessuch as the publication system 120 (e.g., browsing history from a searchsite or e-commerce site), the payments system 122 (e.g., purchasehistory of the user), the databases 126 (e.g., behavior history of theuser such as past user interface interactions by the user), the thirdparty servers 130 (e.g., social networking posts from the user orfriends of the user), the client devices 110 and 112 (e.g., sensor datasuch as current location of the user as determined by a GPS component ofa mobile device), and other sources.

In the example embodiment, the analysis module 350 generates variouspersonalization models (e.g., models indicating a tendency or likelihoodof interest in some things as compared to others) using the user data.The personalization models may be generated using various portions ofthe user data. In some embodiments, different personalization models maybe developed from the user data and tested to determine the mosteffective personalization model for various personalization objectives(e.g., which models are best for certain types of users, which modelsare best for certain regions, which models are best for certain browsingsession, which models are best for when browsing on certain devices, andso on). In some embodiments, such personalization may include, forexample, personalized search results, personalized search auto-complete,and personalized deal offerings. Features that have shown promise inpersonalization on the web and e-commerce may include, for example,gender and age, user's location, price and category, user's history ofsearch activity, ability of user to read at differing levels ofcomplexity, and patterns of re-finding the same search result. Forexample, a propensity model may be generated using the user data. Thepropensity model may model the user propensity for a particular action.The analysis module 350 may perform personalization using the propensitymodel. For example, if the user has a propensity to purchase goods usingthe fastest delivery method, the analysis module 350 may personalize thedelivery methods to emphasize the faster shipping methods. Thepersonalization may include modifying the user interface, modifyinginformation presented to the user, identifying additional items that maybe of interest to the user, and so on.

In some embodiments, the data module 340 may access real-time activityof the user along with other user data. For example, the user data mayinclude real-time data of the user (e.g., a search query fragment), userprofile information (e.g., categories of interest), and purchase historydata (e.g., past purchases of particular items). The analysis module 350may generate the personalization models based on the user data andupdate the personalization models using the real-time data of the user.For example, the analysis module 350 may generate the personalizationmodel using purchase history data of the user. The personalization modelmay be updated with the real-time data of the user as it is received bythe data module 340 (e.g., as the user navigates search results, updatethe personalization model). The personalization model may then be usedin real-time to perform personalization for the user (e.g., determinethe user's preferences such as delivery method, product pricepreference, and so forth).

In some embodiments, the personalization models may be used to determinethe user's intent for a particular session. Some users have a tendencyto engage in an online session for a particular purpose, referred toherein as the “user's intent”. For example, the user intent for a givensession may be to find a new mobile phone of a particular brand. Basedon the determined intent of the user, the analysis module 350 mayperform various personalizations for the user.

Further, in some embodiments, the analysis module 350 may generate thepersonalization models offline. For example, the data module 340 mayaccess various information from databases that do not necessarily needto be couple to a network.

In some embodiments, the analysis module 350 may generate a timeline ofthe user data. For example, a browsing session that occurred further inthe past may be further down on the timeline as compared to the mostrecent browsing session of the user. In some example embodiments, thetimeline of user data may be presented to the user. In other exampleembodiments, the timeline may be used to weight various user data in thepersonalization models (e.g., user data from further in the past is lesssignificant than more recent user data).

In some embodiments, the analysis module 350 may identify long-termbehavior or trends based on an analysis of the user data. The long-termtrends may be used as a basis for the personalization models.

In some embodiments, different queries by the user may be personalizedin a different manner. The analysis module 350 may personalize the queryby modifying the search rankings. For some queries, the search rankingmay be personalized in the same manner and for other queries, the searchrankings may be personalized in a different manner.

In still other embodiments, the user data may use the user data topersonalize different portions of the browsing session. For example,historic behavior may provide benefits at the start of a session whileshort-term behavior (e.g., real-time user data) may contribute topersonalization when a user is further into a browsing session. Variouscombinations of long term and short term behavior of the user may beemployed to personalize throughout a session of the user.

In yet other embodiments, product categories of interest (e.g., productcategories of interest to the user on an e-commerce site) may inferredbased on the user data and personalization models. Item condition thatthe user is likely interest in may be inferred from the user data (e.g.,whether the user seems to prefer used items as opposed to new items).Interest in a specific item may be inferred from the user data.

In some embodiments, personalization may be based, at least in part, ona behavior profile generated from, for example, long-term user behavior(e.g., user “badges”, or profile data for the user). Rules, behaviormining, and predictive modeling may be employed to personalize onlineexperiences for the user (e.g., search auto-complete, special dealsofferings). For example, sale type (e.g., auction versus buy-it-now),item condition (e.g., new versus used), category (e.g., preference ofcategories), price (e.g., price ranges of purchasing activity), deals(e.g., propensity to purchase deals), social share (e.g., propensity toshare items in social media), and so forth.

FIG. 4 depicts an example embodiment of a personalization platform 400that provides personalization services for user 105 and/or client device110. In some embodiments, personalization system 400 is similar topersonalization system 123. In the example embodiment, personalizationplatform 400 provides personalization services to client 105 and/orclient device 110 via e-commerce system & services 402.

In the example embodiment, e-commerce system & services 402 may includesystem & services 410 a-410 x collectively referred to herein asservices 410 or “service subsystems” 410. Examples of system & services410 may include, for example: (i) a searching subsystem 410 a (e.g., forproviding search and/or search autocomplete functionality to user 105,based on personalization factors such as, for example, price ranges in atarget category, preferences relating to new and used items), which maybe similar to searching engine 208 (shown in FIG. 2); (ii) a dealssubsystem 410 b (e.g., for providing featured items and/or deals to user105), which may be similar to listing engine 206 (shown in FIG. 2);(iii) a publication subsystem 410 c (e.g., for providing user access toviewing of items), which may be similar to publication engine 202 (shownin FIG. 2) and/or publication system 120 (shown in FIG. 1); (iv) aselling subsystem 410 x (e.g., for executing transactional events withuser 105 and/or computing device 110), which may be similar to sellingengine 204 (shown in FIG. 2) and/or payment content system 122 (shown inFIG. 1); and other subsystems (not separately shown, e.g., adssubsystem, modeling subsystem) of e-commerce system 402 that may receiveuser events or otherwise identify user data, and which may leveragepersonalization services as described herein, such as, for example, acustomer service subsystem (e.g., for predicting what a customer comingto a customer service site may have an issue with), a mobile app/webpage subsystem (e.g., evaluating what experience to show the userincluding, for example, colors, positions, text size (accessibility),widgets, and flows of activity, e.g., similar to the publicationsystem), and an ads subsystem (e.g., for retargeting).

In example embodiments, the personalization system 400 performs avariety of different personalization services for the online experiencesof user 105, such as personalized search rankings/search autocomplete,website layout, onsite ads, user preferences, deals, featured products,and so forth. In various example embodiments, the personalization system400 may provide controlled access to the user data, enable eventprocessing at near real-time, maintain activity timelines of the userdata, enable in-session targeting, provide environment for predictivemodel evaluation, backup and restore the user data, and so forth. Thepersonalization system 400 may provide personalization by modeling andanalyzing the user data. Many different schemes and techniques may beemployed to model and analyze the user data to perform personalizationfor the user.

Personalization system 400, in the example embodiment, includes apersonalization cluster 420. Cluster 420 includes a plurality ofpersonalization servers 422 a-422 x (collectively, personalizationservers 422). Each personalization server 422 includes a short termmemory file (“STMF”) 426, a long term memory file (“LTMF”) 428, a randomaccess memory (“RAM”) (not separately shown in FIG. 4) (e.g., includinguser profile data), and a personalization evaluation engine 424. In theexample embodiment, STMF 426 and LTMF 428 are stored on disk storage,and as an instance of a Lambda architecture. In some embodiments, one ormore of the STMF 426 and the LTMF 428 may stored, in part or in whole,in RAM or cache memory. The STMF 426 contains the incremental data sincethe last LTMF 428 was pushed into production. Each user of ecommercesystem & services 402 is assigned to a single personalization server 422(e.g., for purposes of receiving various personalization servicesprovided by personalization platform 400). For example, user 105 may beassigned to personalization server 422 a. As such, user data associatedwith user 105 (e.g., historical or recent user events data, propensitydata) may be stored or staged in STMF 426 and/or LTMF 428 onpersonalization server 422 a.

The user data may include a variety of different types of informationfrom a variety of sources. For example, the user data may include userprofile information (e.g., user demographic information such as accountid, gender, age, region, ethnicity, marital status, socioeconomicstatus, and the like), purchase history (e.g., what items the user hasconsummated a purchase (“purchase events”)), browsing history (e.g.,what searches the user has performed (“searching events”), what itemsthe user has viewed and/or marked for “watch” (“watch events”)),contextual information (e.g., current location of user, user interactionwith user interfaces, sensor data from a device of the user, and soforth), and other information. The user data may also include real-timeor near real-time data of the user. For example, the user's activityduring a particular browsing session (also referred to herein as“in-session data”) may be included in the user data (e.g., navigationduring a particular browsing session, search terms during a browsersession, various interactions with the user interface, and so).

In the example embodiment, user data is generated by user 105 and/orclient device 110 via e-commerce system & services 402 and transmittedthrough a user events pipeline 430 associated with the personalizationsystem 400. User events pipeline 430 identifies events such astransactional events 432 and behavioral events 434, and associatedinformation. Examples of behavioral events 434 may include, for example,(a) search/search autocomplete events (e.g., user 105 submitting asearch for “Wayne Gretzky hockey card”); (b) viewing events (e.g., user105 views a particular listing for a Wayne Gretzky rookie trading cardby, for example, clicking on a particular listing generated by thesearch event, thereby viewing the details of the particular listing);(c) watch events (e.g., user 105 marks the trading card listing as alisting to “watch”, or continue to follow, as the listing progresses;and (d) other-user collections (e.g., users following other users'collections). Examples of transactional events 432 may include, forexample, (I) user bidding events (e.g., user 105 enters a bid in anauction listing for the Wayne Gretzky trading card, thereby indicating adesire to purchase the item); (II) user purchase events (e.g., user 105enters a bid that wins the auction listing); (III) best offer events(e.g., user 105 makes a best offer as part of a bid); (IV) best offerremove events (e.g., user 105 removes a best offer); (V) bid lost events(e.g., user 105 is no longer the top bid); (VI) feedback events (e.g.,when some other user provides feedback on user 105); and (VII) item soldevents (e.g., user 105 sells an item).

In the example embodiment, personalization platform 400 includes a datanormalization system 436. In one embodiment, data normalization system436 converts user events from the user events pipeline 430 into a dataframework format as provided by Apache Avro™ (Apache Software Foundationof Forest Hills, Md.). Once converted to Avro format, data normalizationsystem 436 transmits the normalized user events to data distributionqueues 450 for distribution to a personalization cluster 420.

In the example embodiment, personalization platform 400 distributes userdata such as normalized transactional events 432 and behavioral events434 associated with users such as user 105 through data distributionqueues 450. As described above, each user is assigned to a particularpersonalization server 422 within personalization cluster 420. As such,queues 450 distribute data associated with a particular user to thatuser's assigned personalization server 422. For example, user event dataassociated with user 105 is transmitted to personalization server 422 aand stored, e.g., in STMF 426 and/or LTMF 428, where other user eventdata may be transmitted to other personalization servers 422 b-422 x. Insome embodiments, data in queues 450 are segmented by partition, and byattributes. The partitions are used to segment out large use cases(e.g., data for visitors as opposed to data for users), as well as datawhich is batched data verses data which is real-time data. Attributesare used to determine which data goes to which end user (e.g., whichuser 105). In some embodiments, a 1,680 grained filter is used, whereeach end server 422 has 2*N/1,680 grains (where N is the number of endservers, and where 2 represents dual duplication of data to twodifferent servers). As such, a primary copy of data is on one server anda second copy is on another second server, thereby adding server-levelredundancy and fault tolerance.

User events coming through user events pipeline 430, in the exampleembodiment, are normalized and distributed out through queues 450 topersonalization cluster 420 in near real-time (e.g., within a fewseconds from their occurrence). In some embodiments, the user events aredistributed and stored in STMF 426 for upcoming use (e.g., during theuser's current session). As such, the user's recent activities may bepromptly leveraged by evaluation engine 424 to provide personalizationthat reflects, for example, propensities the user may have for theircurrent session interacting with the ecommerce system 402.

In the example embodiment, personalization platform 400 also sends userevents entering user events pipeline 430 to an offline/batch processingdatabase 440. Data associated with user events (e.g., transactionalevents 432, behavioral events 434) are stored in database 440 and usedfor batch processing 442 (e.g., nightly, weekly). In some embodiments,batch processing 442 provides functionality similar to data module 340and/or analysis module 350 as shown and described in reference to FIG.3. Batch processing 442, in some embodiments, includes training ofmodels (not separately identified) that may be used by model evaluationengines 424 for producing personalization results, such as propensitymodels and/or results described above.

In some embodiments, the LTMFs 428 are generated on a weekly basis andtransferred to one or more servers 422 by offline/batch processing 442.The LTMFs 428 are constant, and generated from an offline Hadoopprocess. Once released to servers 422, each end server invalidates anypart of the STMF 426 that overlaps with the new LTMF 428. As timepasses, offline/batch processing 442 pulls data from queues 450 with itthen uses to make the next LTMFs 428.

In some embodiments, some batch data is distributed directly to theservers 422 (e.g., to LTMF 428), while other data is distributed toservers 422 through queues 450 (e.g., to STMF 426). For example, ifbatch data is high priority, changed, and below a pre-defined volumethreshold, that data is distributed through queues 450. If a batch ofdata exceeds the pre-defined volume threshold (e.g., large profileupdates for millions of users), then the batch data is passed through toLTMF 428 (unless there is some urgency for the data push).

Further, in the example embodiment, offline/batch processing 442transmits user data associated with particular users to their associatedpersonalization servers 422. As described above, models may be learnedby personalization platform 400. These models may be generated orupdated on a periodic basis (e.g., daily, weekly) and transferred toLTMFs 428 of personalization cluster 420, or to individual LTMFs 428 ofparticular personalization servers 422. The offline data includes, forexample, user profile badges. In the example embodiment, user profilebadges include some collection of variables which indicate a user'scategory affinity, price affinity, or other long term results which arecomputed offline. This data may also include demographic data from anumber of sources, globally referenced user preferences such as theuser's ad choice preference.

During operation, personalization platform 400 provides personalizationservices for one or more of the ecommerce system & services 402. Morespecifically, when one of the ecommerce system's 402 subsystems 410provide certain services to or interactions with user 105 that arecandidate services for personalization, that particular subsystem(referred to herein as the “calling subsystem”) engages personalizationplatform 400 to perform personalization functionality associated withthose services.

In the example embodiment, the calling subsystem generates a (not yetpersonalized) “intermediate results set” of data associated with theparticular service and consults personalization platform 400 to providepersonalization of the results set.

For example, presume user 105 is interacting with ecommerce system 402to conduct a search for Wayne Gretzky sports memorabilia via a searchfeature provided by searching subsystem 410 a (i.e., the callingsubsystem), and the searching subsystem 410 a provides a searchautocomplete function. Upon the user 105 entering the characters “wa”into the search field (data referred to herein as a “query fragment”, ora part of a query), and searching subsystem 410 a engages to perform apersonalized search autocomplete for the user's initial entry. Thesearching subsystem 410 a generates an intermediate results set (i.e.,based on the query fragment) that includes a plurality of possibleresult candidates (e.g., dozens or hundreds) that start with orotherwise involve the letters “wa”, such as “watches”, “washingmachines”, items located in or involving the state of “Washington”,movie media for movies staring “Mark Walberg”, and “Wayne Gretzky”memorabilia, to name but a few. As such, the calling subsystem generatesan intermediate results set that is not yet personalized for theparticular user 105. Other subsystems 410 may generate similarintermediate results sets associated with their provided functionalityand services (e.g., deals listings from deals subsystem 410 b) and, assuch, may similarly have their results personalized by personalizationsystem 400.

Continuing the example, the calling subsystem (e.g., searching subsystem410 a) generates and transmits a personalization request 460 topersonalization platform 400 and, more specifically, to personalizationcluster 420. The request 460 identifies the particular user (e.g., user105), the type of personalization to be performed (e.g., searchautocomplete) identified by, for example, a model identifier (e.g.,identifying a particular model or model type to run), and theintermediate results set (e.g., the list of intermediate resultsstarting with or involving “wa”). In some embodiments, request 460 mayalso include the individualized call data for the particular subsystem,such as the query fragment typed by the user for the searching subsystem(e.g., “wa”), and may also include a timeout value, and/or a maximumnumber of queries to return (e.g., top 10). In some embodiments, thecalling subsystem 410 may perform some preliminary processing prior toissuing the personalization request 460. For example, searchingsubsystem 410 a may prune the intermediate results set prior tosubmitting the request 460, for example, by evaluating the individualintermediate results for criteria such as recency, session activity, andquantity of item views. In other embodiments, the personalization server422 may perform these tasks.

Upon receiving the request 460, personalization platform 400 identifiesthe particular user (e.g., user 105) and routes the personalizationrequest 460 to the particular personalization server 422 assigned tothat user (e.g., server 422 a for user 105). Personalization server 422a processes request 460. More specifically, personalization evaluationengine 424 accesses user data from STMF 426 and/or LTMF 428 to processrequest 460 with data associated with the identified user (e.g., user105). In the example embodiment, evaluation engine 424 scores eachintermediate result from the intermediate results set based on the userdata to generate a personalization score for each intermediate result.

In some embodiments, evaluation engine 424 applies a machine learnedmodel (e.g., trained by offline/batch processing 442) to eachintermediate result to generate the personalization score for theintermediate result. Further, in some embodiments, evaluation engine 424uses user events (e.g., transactional events 432 and/or behavioralevents 434) from STMF 426 and/or LTMF 428 to generate thepersonalization score. For example, the STMF 426 may be used directly toidentify that there is a view item on something in a particularcategory. In some embodiments, STMF 426 may be used in aggregate todetermine, for the current session, a breakdown of the categories beingused. Additionally, STMF 426 may be used to provide a factor to themodels that identify, for example, an event of type X followed in timeperiod T by an event of type Y.

Continuing the example, presume user 105 had previously performed asearch (i.e., a behavioral event) for “washing machines” 4 weeks prior,but during the current session (e.g., 5 minutes prior) had performed asearch for “Wayne Gretzky rookie”. Further, during the washing machinessearch, user 105 conducted no views of results presented, but during therecent Gretzky search the user 105 viewed 3 items, bid on one of theitems, and marked one of the items for “watch.” Personalization system400 received the washing machines user event at the time, anddistributed that event through to personalization server 422 a and STMF426, but that event has subsequently been moved to LTMF 428. At the timeof the more recent user events (e.g., the Gretzky search event andsubsequent views, bid, and watch events), personalization system 400received the user events through user events pipeline 430 and similarlydistributed the user events through queues 450 to STMF 426.

Now, during processing of the described personalization request 460 forsearch autocomplete personalization from searching subsystem 410 a,personalization server 422 a utilizes both the recently-distributed userevents and the older user events to score each of the intermediateresults. For example, consider the intermediate result associated with“Mark Walberg.” The user 105 has no user events associated with MarkWalberg. As such, the evaluation engine 424 may generate a lowpersonalization score for this result. For the “washing machine”intermediate result, the user 105 has a search event associated withwashing machines, but there is only one event. Further, it is not arecent event (e.g., 4 weeks old), and the event generated no additionalevents. As such, the evaluation engine 424 may score this intermediateresult slightly higher than the Mark Walberg result. For the “WayneGretzky” intermediate result, the user has a search event associatedwith Wayne Gretzky. Further, the event is recent (e.g., 5 minutes old),and the event generated several additional events (e.g., views, bid, andwatch). As such, the evaluation engine 424 may score this intermediateresult higher than the washing machine result and considerably higherthan the Mark Walberg result.

Upon scoring each of the intermediate results in the results set,personalization platform 400 sends a response 462 back to the callingsubsystem (e.g., searching subsystem 410 a). In some embodiments,response 462 includes scores for each of the intermediate resultsprovided in request 460. In other embodiments, personalization platform400 scores each of the intermediate results but returns only a subset ofthe intermediate results. In one embodiment, personalization platform400 returns only those intermediate results with a score over apre-determined threshold. In another embodiment, personalizationplatform 400 returns a predetermined number of results. In someembodiments, the subset is an ordered list based on the personalizationscore (e.g., highest score first).

In some embodiments, personalization platform 400 includes a persistenceservice 412. Persistence service 412 may provide masks or overridesfunctionality from one or more ecommerce subsystems 410 for particularuser events. A mask function may prevent tracking and/or use of certaintypes of user events within personalization system 400. For example, theuser 105 may shopping for engagement rings under a shared account andmay not want personalization platform 400 to factor in such events forfuture personalization. As such, some user events may be blocked frompropagating through queues 450. An override functionality may beinitiated when some data needs to be more quickly available topersonalization server 422. An override event may be propagated such asto bypass user event pipeline 430 and sent straight to distributionqueue 450 and on to the personalization server.

FIG. 5 is an example method 500 for generating personalized results foran online user of an ecommerce system such as networked system 102(shown in FIG. 1). In the example embodiment, method 500 is performed bya computing device including at least one processor and a memory. Method500 includes receiving 510 a plurality of user events, each user eventof the plurality of user events including one or more of a transactionalevent and a behavioral event associated with the online user. Method 500also includes receiving 520 a personalization request from a requestingsystem, the personalization request including a plurality ofintermediate results identified by the requesting system, eachintermediate result representing a possible outcome that may bepresented by the requesting system to the online user. Method 500further includes computing 530 a score for each intermediate result ofthe plurality of immediate results based at least in part on theplurality of user events, thereby generating a plurality of scores.Method 500 also includes returning 540 the plurality of scores to therequesting system for use in personalizing an online experience of theonline user.

In some embodiments, method 500 includes receiving a first user event ofthe plurality of user events, the first user event including a useridentifier identifying the online user, determining a firstpersonalization server from a plurality of personalization servers basedat least in part on the user identifier, and transmitting the first userevent to the first personalization server for said computing of thescore.

In some embodiments, method 500 includes receiving a first user event ofthe plurality of user events as an override event, determining that thefirst user event represents an event that includes one or more of anoverride event and a priority event, and transmitting the first userevent to a queueing module.

In some embodiments, method 500 includes receiving the plurality of userevents, generating a personalization model for the online user based atleast in part on the plurality of user events, and transmitting thepersonalization model to a first personalization server assigned toperform personalization for the online user.

In some embodiments, the requesting system provides a searchautocomplete functionality for the online user, and the plurality ofuser events includes user events associated with one or more of (i)historical search events; (ii) historical search autocomplete events;and (iii) historical purchase events.

In some embodiments, the personalization request further includes a useridentifier identifying the online user, and the method 500 furtherincludes determining a first personalization server from the pluralityof personalization servers based at least in part on the user identifierand processing the personalization request with the firstpersonalization server.

In some embodiments, the first personalization server includes a shortterm memory (STM) and a long term memory (LTM), and the STM includes afirst subset of user events of the plurality of user events occurringsince a predetermined time, and the LTM includes a second subset of userevents of the plurality of user events occurring prior to thepredetermined time.

Modules, Components, and Logic

FIG. 6 is a block diagram illustrating components of a machine 600,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 6 shows a diagrammatic representation of the machine600 in the example form of a computer system, within which instructions624 (e.g., software, a program, an application, an applet, an app, orother executable code) for causing the machine 600 to perform any one ormore of the methodologies discussed herein may be executed. Inalternative embodiments, the machine 600 operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine 600 may operate in the capacity of a servermachine or a client machine in a server-client network environment, oras a peer machine in a peer-to-peer (or distributed) networkenvironment. The machine 600 may be a server computer, a clientcomputer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a set-top box (STB), a personal digital assistant(PDA), a cellular telephone, a smartphone, a web appliance, a networkrouter, a network switch, a network bridge, or any machine capable ofexecuting the instructions 624, sequentially or otherwise, that specifyactions to be taken by that machine. Further, while only a singlemachine 600 is illustrated, the term “machine” shall also be taken toinclude a collection of machines 600 that individually or jointlyexecute the instructions 624 to perform any one or more of themethodologies discussed herein.

The machine 600 includes a processor 602 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 604, and a static memory 606, which areconfigured to communicate with each other via a bus 608. The machine 600may further include a video display 610 (e.g., a plasma display panel(PDP), a light emitting diode (LED) display, a liquid crystal display(LCD), a projector, or a cathode ray tube (CRT)). The machine 600 mayalso include an alphanumeric input device 612 (e.g., a keyboard), acursor control device 614 (e.g., a mouse, a touchpad, a trackball, ajoystick, a motion sensor, or other pointing instrument), a storage unit616, a signal generation device 618 (e.g., a speaker), and a networkinterface device 620.

The storage unit 616 includes a machine-readable medium 622 on which isstored the instructions 624 embodying any one or more of themethodologies or functions described herein. The instructions 624 mayalso reside, completely or at least partially, within the main memory604, within the static memory 606, within the processor 602 (e.g.,within the processor's cache memory), or both, during execution thereofby the machine 600. Accordingly, the main memory 604, static memory 606and the processor 602 may be considered as machine-readable media 622.The instructions 624 may be transmitted or received over a network 626via the network interface device 620.

In some example embodiments, the machine 600 may be a portable computingdevice, such as a smart phone or tablet computer, and have one or moreadditional input components 630 (e.g., sensors or gauges). Examples ofsuch input components 630 include an image input component (e.g., one ormore cameras, an audio input component (e.g., one or more microphones),a direction input component (e.g., a compass), a location inputcomponent (e.g., a global positioning system (GPS) receiver), anorientation component (e.g., a gyroscope), a motion detection component(e.g., one or more accelerometers), an altitude detection component(e.g., an altimeter), and a gas detection component (e.g., a gassensor). Inputs harvested by any one or more of these input componentsmay be accessible and available for use by any of the modules describedherein.

As used herein, the term “memory” refers to a machine-readable medium622 able to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 622 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storeinstructions 624. The term “machine-readable medium” shall also be takento include any medium, or combination of multiple media, that is capableof storing instructions (e.g., instruction 624) for execution by amachine (e.g., machine 600), such that the instructions, when executedby one or more processors of the machine 600 (e.g., processor 602),cause the machine 600 to perform any one or more of the methodologiesdescribed herein. Accordingly, a “machine-readable medium” refers to asingle storage apparatus or device, as well as “cloud-based” storagesystems or storage networks that include multiple storage apparatus ordevices. The term “machine-readable medium” shall accordingly be takento include, but not be limited to, one or more data repositories in theform of a solid-state memory, an optical medium, a magnetic medium, orany suitable combination thereof. The term “machine-readable medium”specifically excludes non-statutory signals per se.

Furthermore, the machine-readable medium 622 is non-transitory in thatit does not embody a propagating signal. However, labeling themachine-readable medium 622 as “non-transitory” should not be construedto mean that the medium is incapable of movement; the medium should beconsidered as being transportable from one physical location to another.Additionally, since the machine-readable medium 622 is tangible, themedium may be considered to be a machine-readable device.

The instructions 624 may further be transmitted or received over acommunications network 626 using a transmission medium via the networkinterface device 620 and utilizing any one of a number of well-knowntransfer protocols (e.g., hypertext transfer protocol (HTTP)). Examplesof communication networks include a local area network (LAN), a widearea network (WAN), the Internet, mobile telephone networks, plain oldtelephone service (POTS) networks, and wireless data networks (e.g.,WiFi, LTE, and WiMAX networks). The term “transmission medium” shall betaken to include any intangible medium that is capable of storing,encoding, or carrying instructions 624 for execution by the machine 600,and includes digital or analog communications signals or otherintangible medium to facilitate communication of such software.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium 622or in a transmission signal) or hardware modules. A “hardware module” isa tangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as afield-programmable gate array (FPGA) or an ASIC. A hardware module mayalso include programmable logic or circuitry that is temporarilyconfigured by software to perform certain operations. For example, ahardware module may include software encompassed within ageneral-purpose processor or other programmable processor. It will beappreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software mayaccordingly configure a processor 602, for example, to constitute aparticular hardware module at one instance of time and to constitute adifferent hardware module at a different instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors 602 that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors 602 may constitute processor-implementedmodules that operate to perform one or more operations or functionsdescribed herein. As used herein, “processor-implemented module” refersto a hardware module implemented using one or more processors 602.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, with a processor 602 being an example ofhardware. For example, at least some of the operations of a method maybe performed by one or more processors 602 or processor-implementedmodules. Moreover, the one or more processors 602 may also operate tosupport performance of the relevant operations in a “cloud computing”environment or as a “software as a service” (SaaS). For example, atleast some of the operations may be performed by a group of computers(as examples of machines 600 including processors 602), with theseoperations being accessible via the network 626 (e.g., the Internet) andvia one or more appropriate interfaces (e.g., an application programinterface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors 602, not only residing within a singlemachine 600, but deployed across a number of machines 600. In someexample embodiments, the one or more processors 602 orprocessor-implemented modules may be located in a single geographiclocation (e.g., within a home environment, an office environment, or aserver farm). In other example embodiments, the one or more processors602 or processor-implemented modules may be distributed across a numberof geographic locations.

Although an overview of the inventive subject matter has been describedwith reference to specific example embodiments, various modificationsand changes may be made to these embodiments without departing from thebroader scope of embodiments of the present disclosure. Such embodimentsof the inventive subject matter may be referred to herein, individuallyor collectively, by the term “invention” merely for convenience andwithout intending to voluntarily limit the scope of this application toany single disclosure or inventive concept if more than one is, in fact,disclosed.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores are somewhat arbitrary,and particular operations are illustrated in a context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within a scope of various embodiments of thepresent disclosure. In general, structures and functionality presentedas separate resources in the example configurations may be implementedas a combined structure or resource. Similarly, structures andfunctionality presented as a single resource may be implemented asseparate resources. These and other variations, modifications,additions, and improvements fall within a scope of embodiments of thepresent disclosure as represented by the appended claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A personalization system for generatingpersonalized results for an online user, the personalization systemcomprising: a user events module configured to: receive a plurality ofuser events, each user event of the plurality of user events includingone or more of a transactional event and a behavioral event associatedwith the online user; a personalization cluster including a plurality ofpersonalization servers, each personalization server of the plurality ofpersonalization servers configured to: receive a personalization requestfrom a requesting system, the personalization request including aplurality of intermediate results identified by the requesting system,each intermediate result representing a possible outcome that may bepresented by the requesting system to the online user; compute a scorefor each intermediate result of the plurality of immediate results basedat least in part on the plurality of user events, thereby generating aplurality of scores; and return the plurality of scores to therequesting system for use in personalizing an online experience of theonline user.